package com.winchain.chainbill.bill.base.dao;

import com.shell.bee.persistence.mapper.BaseMapper;
import com.winchain.chainbill.bill.base.po.CbDct;
import com.winchain.chainbill.bill.biz.discount.vo.BillDct;
import com.winchain.chainbill.bill.biz.discount.vo.DctBusinessDailyEarnTotalVO;
import com.winchain.chainbill.bill.biz.discount.vo.DctCalculatedInterestInfoVO;
import com.winchain.chainbill.bill.biz.discount.vo.DctCalculatedInterestQueryVO;
import com.winchain.chainbill.bill.biz.discount.vo.DctCalculatedInterestTotalVO;
import com.winchain.chainbill.bill.biz.discount.vo.DctForInvoiceVo;
import com.winchain.chainbill.bill.biz.query.vo.CbDctOverdueVo;
import com.winchain.chainbill.bill.biz.query.vo.CbRecQueryVo;
import java.math.BigDecimal;
import java.util.List;
import org.apache.ibatis.annotations.Param;

public abstract interface CbDctDao extends BaseMapper<CbDct> {
	public abstract List<BillDct> selectBillDctsByBillIdAndState(@Param("billId") String paramString1,
			@Param("dctState") String paramString2);

	public abstract List<BillDct> selectBillDctsByPrntIdAndBillState(@Param("prntId") String paramString1,
			@Param("billState") String paramString2);

	public abstract BillDct selectBillDctByBillIdAndState(@Param("billId") String paramString1,
			@Param("dctState") String paramString2);

	public abstract List<BillDct> selectDcts(CbRecQueryVo paramCbRecQueryVo);

	public abstract List<DctCalculatedInterestInfoVO> selectDctCalculatedInterestByPage(
			DctCalculatedInterestQueryVO paramDctCalculatedInterestQueryVO);

	public abstract DctCalculatedInterestTotalVO selectDctCalculatedInterestTotal(
			DctCalculatedInterestQueryVO paramDctCalculatedInterestQueryVO);

	public abstract List<DctCalculatedInterestTotalVO> selectDctCalculatedInterestTotalForChart(
			DctCalculatedInterestQueryVO paramDctCalculatedInterestQueryVO);

	public abstract DctBusinessDailyEarnTotalVO selectDctBusinessDailyEarnTotal(
			DctCalculatedInterestQueryVO paramDctCalculatedInterestQueryVO);

	public abstract List<BillDct> selectDctBillForPaid(CbRecQueryVo paramCbRecQueryVo);

	public abstract CbDct selectDctByBillIdAndStates(@Param("billId") String paramString,
			@Param("dctStates") List<String> paramList);

	public abstract List<DctForInvoiceVo> selectUnApplyBills(@Param("rpurState") String paramString1,
			@Param("dctState") String paramString2, @Param("sellerId") String paramString3,
			@Param("finId") String paramString4, @Param("invoiceType") String paramString5,
			@Param("isServiceCharge") Boolean paramBoolean, @Param("dctIds") String... paramVarArgs);

	public abstract List<DctForInvoiceVo> selectApplyBills(@Param("invoiceId") String paramString);

	public abstract List<CbDct> selectDctsByDate(@Param("workDate") String paramString);

	public abstract BigDecimal sumDctPaidAmt(@Param("cusId") String paramString1, @Param("issuer") String paramString2,
			@Param("strtDate") String paramString3, @Param("grpIds") String... paramVarArgs);

	public abstract List<BillDct> selectDctBillForApprove(CbRecQueryVo paramCbRecQueryVo);

	public abstract List<BillDct> selectUnuploadInvoiceList(CbRecQueryVo paramCbRecQueryVo);

	public abstract int countOverdueUploadInvoice(@Param("cusId") String paramString1,
			@Param("currentDate") String paramString2);

	public abstract List<CbDctOverdueVo> selectDctOverdueRecord(@Param("currentDate") String paramString);

	public abstract List<BillDct> selectDctBillForMgtByStates(CbRecQueryVo paramCbRecQueryVo);
}